package proyecto.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import proyecto.modelo.Empresa;

public class EmpresaDAO {

    public Empresa insertar(Empresa em) {
        String query = "INSERT INTO empresa(codigoempresa,razon,rucempresa,nombrecomer,direccion,ciudad)" + "VALUES (?,?,?,?,?,?)";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, em.getCodigo());
            stmt.setString(2, em.getRazon());
            stmt.setString(3, em.getRuc());
            stmt.setString(4, em.getNombre());
            stmt.setString(5, em.getDireccion());
            stmt.setString(6, em.getCiudad());
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo insertar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        return em;
    }

    public Collection<String> listar(){
        String query="SELECT nombrecomer FROM empresa";
        Collection<String> empresas=new ArrayList<String>();
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                empresas.add(rs.getString("nombrecomer"));
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return empresas;
    }

    public int buscarPorNombre(String nombre){
        int id=0;
        String query="SELECT idempresa FROM empresa WHERE nombrecomer='"+nombre+"'";
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            if (rs.next()) {
                id=rs.getInt("idempresa");
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return id;
    }

    public Collection<Empresa> buscarAll(String nombre){
        String query = "SELECT idempresa,codigoempresa,razon,rucempresa FROM empresa WHERE (nombrecomer like '%" + nombre + "%') OR (razon like '%" + nombre + "%')";
        Collection<Empresa> c = new ArrayList<Empresa>();
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                Empresa em=new Empresa();
                em.setIdempresa(rs.getString("idempresa"));
                em.setCodigo(rs.getString("codigoempresa"));
                em.setRazon(rs.getString("razon"));
                em.setRuc(rs.getString("rucempresa"));
                c.add(em);
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return c;
    }

    public void modificar(int idempresa, String codigo) {
        String query = "UPDATE empresa SET codigoempresa = ? WHERE idempresa = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, codigo);
            stmt.setInt(2, idempresa);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo modificar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }

    public void eliminar(int idempresa) {
        String query = "DELETE FROM empresa WHERE idempresa = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setInt(1, idempresa);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo eliminar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }
}
